package com.xy.biz.base.service;

import com.xy.biz.base.domain.bo.ExpressBO;
import com.xy.biz.base.domain.query.ExpressQuery;
import com.xy.biz.base.domain.req.GetExpressByNameRequest;
import com.xy.biz.base.domain.req.GetExpressRequest;
import com.xy.biz.base.domain.resp.SfExpressPropertiesResponse;
import com.xy.lang.domain.Result;

import java.util.Collection;
import java.util.List;

/**
 * @author Greekn Zhang
 * @date 2021/8/5 14:58
 * @description
 */
public interface ExpressService {
    /*    *//**
     * 查询快递
     *//*
    Result<List<DeliveryTrackingProgressBO>> getExpress(GetExpressRequest request) throws Exception;*/

    /**
     * 保存
     *
     * @param expressBO
     */
    Result<?> saveExpress(ExpressBO expressBO);

    /**
     * 根据快递名字获取快递配置信息
     *
     * @param request
     */
    Result<SfExpressPropertiesResponse> getByExpress(GetExpressByNameRequest request);

    /**
     * 保存多个
     *
     * @param collection
     */
    Result<?> saveAllExpress(Collection<ExpressBO> collection);

    /**
     * 更新
     *
     * @param expressBO
     */
    Result<?> updateExpress(ExpressBO expressBO);

    /**
     * 删除
     *
     * @param expressId
     */
    Result<?> deleteExpress(java.lang.Long expressId);

    /**
     * 查找一个
     *
     * @param expressId
     * @return
     */
    ExpressBO getExpress(java.lang.Long expressId);

    /**
     * 查找多个
     *
     * @param collection 标识集合
     */
    List<ExpressBO> listExpressById(Collection<Long> collection);

    /**
     * 查找多个
     *
     * @param query 查找条件
     */
    List<ExpressBO> listExpress(ExpressQuery query);

    /**
     * 统计个数
     *
     * @param query 查找条件
     */
    int countExpress(ExpressQuery query);
}
